﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Sistema_financiero
{
    public partial class frm_Buscar_Garante : Form
    {
        public List<Entidades.Cliente> Lista_todos_clientes = new List<Sistema_financiero.Entidades.Cliente>();
        public List<Entidades.Cliente> Lista_todos_clientes_res = new List<Sistema_financiero.Entidades.Cliente>();
        public List<Entidades.Cliente> Lista_todos_clientes_completa = new List<Sistema_financiero.Entidades.Cliente>();
        public Entidades.Cliente Cliente_seleccionado = new Sistema_financiero.Entidades.Cliente();
        public string texto_anterior;
        public bool Busqueda_nombres;
        public bool Aceptar;
        

        private void frm_Buscar_Cliente_Load(object sender, EventArgs e)
        {
            Lista_todos_clientes_completa = Lista_clientes();
            Lista_todos_clientes_res = Lista_todos_clientes_completa;
            dgv_Busqueda_Cliente.DataSource = Lista_todos_clientes_res;

            if (dgv_Busqueda_Cliente.RowCount > 0)
            {
                dgv_Busqueda_Cliente.CurrentCell = dgv_Busqueda_Cliente.Rows[0].Cells[1];
            }

            dgv_Busqueda_Cliente.Columns[10].HeaderText = "Nº de documento";
            dgv_Busqueda_Cliente.Columns[25].HeaderText = "Fecha de ingreso";
            dgv_Busqueda_Cliente.Columns[0].Visible = false;
            dgv_Busqueda_Cliente.Columns[3].Visible = false;
            dgv_Busqueda_Cliente.Columns[4].Visible = false;
            dgv_Busqueda_Cliente.Columns[5].Visible = false;
            dgv_Busqueda_Cliente.Columns[6].Visible = false;
            dgv_Busqueda_Cliente.Columns[7].Visible = false;
            dgv_Busqueda_Cliente.Columns[9].Visible = false;
            dgv_Busqueda_Cliente.Columns[11].Visible = false;
            dgv_Busqueda_Cliente.Columns[12].Visible = false;
            dgv_Busqueda_Cliente.Columns[13].Visible = false;
            dgv_Busqueda_Cliente.Columns[14].Visible = false;
            dgv_Busqueda_Cliente.Columns[15].Visible = false;
            dgv_Busqueda_Cliente.Columns[16].Visible = false;
            dgv_Busqueda_Cliente.Columns[17].Visible = false;
            dgv_Busqueda_Cliente.Columns[18].Visible = false;
            dgv_Busqueda_Cliente.Columns[19].Visible = false;
            dgv_Busqueda_Cliente.Columns[20].Visible = false;
            dgv_Busqueda_Cliente.Columns[21].Visible = false;
            dgv_Busqueda_Cliente.Columns[22].Visible = false;
            dgv_Busqueda_Cliente.Columns[23].Visible = false;
            dgv_Busqueda_Cliente.Columns[24].Visible = false;
            dgv_Busqueda_Cliente.Columns[26].Visible = false;

            Busqueda_nombres = Tipo_busqueda(rbtn_Nombre_apellido, rbtn_Numero_doc);
            dgv_Busqueda_Cliente.AutoResizeColumns();
            texto_anterior = "";
            Enable_disable_aceptar(dgv_Busqueda_Cliente.Rows.Count);
        }

        public frm_Buscar_Garante()
        {
            InitializeComponent();
            Aceptar = false;


        }


        public List<Entidades.Cliente> Lista_clientes()
        {
            List<Entidades.Cliente> Lista = new List<Sistema_financiero.Entidades.Cliente>();
            Lista = Sistema_financiero.Entidades.Cliente.Obtener_Todos_Clientes();
            return Lista;
        }

        public List<Entidades.Cliente> Lista_clientes(string Filtro, List<Entidades.Cliente> Lista)
        {

            List<Entidades.Cliente> Lista_res = new List<Sistema_financiero.Entidades.Cliente>();

            if (Busqueda_nombres == true)
            {
                foreach (Entidades.Cliente C in Lista)
                {
                    if ((C.Nombres.ToLower().Contains(Filtro.ToLower())) || (C.Apellido.ToLower().Contains(Filtro.ToLower())) || ((C.Nombres + " " + C.Apellido).ToLower().Contains(Filtro.ToLower())) || ((C.Apellido + " " + C.Nombres).ToLower().Contains(Filtro.ToLower())))
                    {
                        Lista_res.Add(C);
                    }
                }
            }
            else
            {
                foreach (Entidades.Cliente C in Lista)
                {
                    string numero;
                    numero = Convert.ToString(C.Num_doc);
                    if (numero.Contains(Filtro))
                    {
                        Lista_res.Add(C);
                    }
                }
            }

            return Lista_res;
        }



        public void Enable_disable_aceptar(int cantidad_filas)
        {
            if (cantidad_filas > 0)
            {
                btn_Aceptar.Enabled = true;
            }
            else
            {
                btn_Aceptar.Enabled = false;
            }
        }

        private void frm_Buscar_Cliente_FormClosing_1(object sender, FormClosingEventArgs e)
        {
            if (Aceptar == false)
            {
                Cliente_seleccionado = null;
            }
        }

        private void tbx_Buscar_TextChanged(object sender, EventArgs e)
        {
            if (texto_anterior != null)
            {
                if (tbx_Buscar.Text.Contains(texto_anterior))
                {
                    Lista_todos_clientes_res = Lista_clientes(tbx_Buscar.Text, Lista_todos_clientes_res);
                    dgv_Busqueda_Cliente.DataSource = Lista_todos_clientes_res;
                    texto_anterior = tbx_Buscar.Text;
                }
                else
                {
                    Lista_todos_clientes_res = Lista_todos_clientes_completa;
                    Lista_todos_clientes_res = Lista_clientes(tbx_Buscar.Text, Lista_todos_clientes_res);
                    dgv_Busqueda_Cliente.DataSource = Lista_todos_clientes_res;
                    texto_anterior = tbx_Buscar.Text;
                }
            }
            else
            {
                Lista_todos_clientes_res = Lista_todos_clientes_completa;
                Lista_todos_clientes_res = Lista_clientes(tbx_Buscar.Text, Lista_todos_clientes);
                dgv_Busqueda_Cliente.DataSource = Lista_todos_clientes_res;
                texto_anterior = tbx_Buscar.Text;
            }
            Enable_disable_aceptar(dgv_Busqueda_Cliente.Rows.Count);


        }
        public bool Tipo_busqueda(RadioButton nombre, RadioButton documento)
        {
            if (nombre.Checked == true)
            {
                lbl_Buscar.Text = "Buscar cliente por nombre y apellido";
                return true;
            }
            else
            {
                lbl_Buscar.Text = "Buscar por Nº de documento";
                return false;
            }
        }

        private void rbtn_Numero_doc_CheckedChanged(object sender, EventArgs e)
        {
            tbx_Buscar.Text = "";
            Busqueda_nombres = Tipo_busqueda(rbtn_Nombre_apellido, rbtn_Numero_doc);
            Lista_todos_clientes_res = Lista_todos_clientes_completa;
        }

        private void rbtn_Nombre_apellido_CheckedChanged(object sender, EventArgs e)
        {
            Busqueda_nombres = Tipo_busqueda(rbtn_Nombre_apellido, rbtn_Numero_doc);
            Lista_todos_clientes_res = Lista_todos_clientes_completa;
            Lista_todos_clientes_res = Lista_clientes(tbx_Buscar.Text, Lista_todos_clientes_res);
            dgv_Busqueda_Cliente.DataSource = Lista_todos_clientes_res;
            tbx_Buscar.Text = "";
            texto_anterior = tbx_Buscar.Text;
        }

        private void tbx_Buscar_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (Busqueda_nombres == false)
            {
                Control.Textbox_restricciones.Permitir_solo_numeros(e);
            }
        }

        private void btn_Aceptar_Click(object sender, EventArgs e)
        {
            Cliente_seleccionado.ID = Convert.ToInt32(dgv_Busqueda_Cliente[0, dgv_Busqueda_Cliente.CurrentRow.Index].Value);
            Cliente_seleccionado.Nombres = Convert.ToString(dgv_Busqueda_Cliente[2, dgv_Busqueda_Cliente.CurrentRow.Index].Value);
            Cliente_seleccionado.Apellido = Convert.ToString(dgv_Busqueda_Cliente[1, dgv_Busqueda_Cliente.CurrentRow.Index].Value);
            Cliente_seleccionado.Id_situacion_iva = Convert.ToInt32(dgv_Busqueda_Cliente[17, dgv_Busqueda_Cliente.CurrentRow.Index].Value);
            Aceptar = true;
            this.Close();
        }

        private void dgv_Busqueda_Cliente_CellContentDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            if (dgv_Busqueda_Cliente.RowCount > 0)
            {
                Cliente_seleccionado.ID = Convert.ToInt32(dgv_Busqueda_Cliente[0, dgv_Busqueda_Cliente.CurrentRow.Index].Value);
                Cliente_seleccionado.Nombres = Convert.ToString(dgv_Busqueda_Cliente[2, dgv_Busqueda_Cliente.CurrentRow.Index].Value);
                Cliente_seleccionado.Apellido = Convert.ToString(dgv_Busqueda_Cliente[1, dgv_Busqueda_Cliente.CurrentRow.Index].Value);
                Cliente_seleccionado.Id_situacion_iva = Convert.ToInt32(dgv_Busqueda_Cliente[17, dgv_Busqueda_Cliente.CurrentRow.Index].Value);
                Aceptar = true;
                this.Close();
            }
        }

        private void btnNuevo_Click(object sender, EventArgs e)
        {
            frm_Alta_Garante Nuevo_Garante = new frm_Alta_Garante();
            Nuevo_Garante.ShowDialog();
            if (Nuevo_Garante.id != -1)
            {
                Cliente_seleccionado.ID = Nuevo_Garante.id;
                Cliente_seleccionado.Nombres = Nuevo_Garante.nombres;
                Cliente_seleccionado.Apellido = Nuevo_Garante.apellido;
                Aceptar = true;
                this.Close();
            }
        }

        private void btn_Cancelar_Click(object sender, EventArgs e)
        {

        }


    }


}
